#pragma once

#include <vector>
#include "shape.h"

extern enum Mode {PLAY, CREATE};
extern Mode MODE;

extern enum Screen {HELP, MAIN, GAMEOVER};
extern Screen SCREEN;

// yay for globals

static const int WINDOW_WIDTH = 800;
static const int WINDOW_HEIGHT = 600;

static const int SECONDS_PER_SHAPE = 20;

extern int ACTIVE_SHAPE;
extern int PREV_TIME;
extern int CURR_TIME;
extern int CURR_TIME_MS;
extern int HIT_TIME;
extern int CLEAR_TEXTURE_TIME;
extern int TOTAL_SCORE;
extern int SCORE;
extern int LIVES;
extern int HIT_PERCENTAGE;
extern float REQUIRED_POINT_RADIUS;
extern bool FULLSCREEN;
extern bool BGMUSIC;
extern bool MONZY;

extern int WITHIN_COUNTER;

extern vector< Shape* > shapes;

/* colors */
static const float gray[4] = {0.3f, 0.3f, 0.3f, 1.f};
static const float white[4] = {1.f, 1.f, 1.f, 1.f};
static const float black[4] = {0.f, 0.f, 0.f, 1.f};
static const float green[4] = {.008f, .596f, .063f, 1.f};
static const float red[4] = {.788f, .094f, .004f, 1.f};
static const float yellow[4] = {1.f, 1.f, 0.f, 1.f};
static const float orange[4] = {1.f, 0.5f, 0.f, 1.f};
static const float blue[4] = {0.f, .5f, 1.f, 1.f};

// only used to construct shapes
extern vector< float* > outline;
extern vector< float* > required;

extern GLuint TEXTURE;
extern bool IS_TEXTURE_SHOWING;
extern Shape * PREV_SHAPE;
extern int CURR_STEP;
extern int PREV_STEP;

extern int FRAME_WIDTH;
extern int FRAME_HEIGHT;
extern char* FRAME_DATA;

// Binary superposition int to indicate which bitmaps to overlay...
extern int rasterTimer[10];

// Vector with all the names of the shapes loaded
extern vector<string> files;